//
//  HZRScrollView.h
//  01.UIScrollView_Reuse
//
//  Created by qianfeng on 15/9/24.
//  Copyright (c) 2015年 韩中睿. All rights reserved.
//

#import <UIKit/UIKit.h>
/*
 1.按页滚动
 2.复用，用3页显示无数个子视图
    a.如果当前显示的是第一张，
    b.如果是最后一张的情况：第三页显示最后一个子视图，第二页：显示倒数第二个子视图，第一页：显示倒数第三个子视图
    c.显示的是中间的任意一个子视图时：第二页显示当前子视图，第一页：显示当前子视图的前一个子视图，第三页显示当前子视图的后一个子视图
 3.将要添加到window上时去刷新数据（显示出来）
 //第一个代理
 4.要通过代理拿到子视图的类型<scrollView并不知道使用者会添加什么类型的子视图>
 //第二个代理：数据源相关的
 a.总共有多少个子视图需要显示
 b.当前显示的子视图数据
 5.数据源变更时，可以刷新数据
 */


//声明一个协议去从代理方，拿到子视图的类型
@protocol HZRScrollViewTypeDelegate <NSObject>
//返回子视图类型：UIView是所有视图的父类，所以可以用UIView来接收这个类型
-(UIView *)subViewType:(NSInteger)atIndex;


@end

//数据源相关的协议
@protocol HZRScrollViewDataSource <NSObject>
//取到总共需要显示的子视图个数
-(NSInteger)numberOfPages;
//通过代理方法把要刷新的子视图和子视图的索引传给代理对象，代理对象用相应的数据源刷新子视图
-(void)refreshSubView:(UIView *)view atIndex:(NSInteger)index;

-(void)loadTwoPage;

-(void)loaddaoTwoPage:(NSInteger)page;

-(void)loadComplete;

@end

@interface HZRScrollView : UIScrollView <UIScrollViewDelegate>

//声明子视图类型
@property (nonatomic, weak) id<HZRScrollViewTypeDelegate> typeDelegate;
//数据源代理
@property (nonatomic, weak) id<HZRScrollViewDataSource> dataSource;

@property (nonatomic, assign) NSInteger currentPage;//当前显示页
//对外提供一个方法，刷新数据
-(void)reloadData;

-(void)gotoPage:(NSInteger)page;

@end


